﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.ServiceModel;

namespace ServicioEvaluacion
{
    
    public class Respuestas : IRespuestas
    {
        #region Agregar Respuesta

        public bool Agregar(Respuesta nuevaRespuesta)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.Agregar(nuevaRespuesta);
            }
            catch (Exception ex)
            {
                resultado = false;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion

        #region Modificar Respuesta

        public bool Modificar(Respuesta respuestaAModificar)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.Modificar(respuestaAModificar);
            }
            catch (Exception ex)
            {
                resultado = false;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion

        #region Eliminar Respuesta

        public bool Eliminar(Respuesta respuestaAEliminar)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.Eliminar(respuestaAEliminar);
            }
            catch (Exception ex)
            {
                resultado = false;
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
            }

            return resultado;
        }
        
        #endregion
        
        #region Listar Respuesta(s)

        public List<Respuesta> Listar(string examenClave = "", short habilidadId = 0, short preguntaId = 0, byte consecutivo = 0)
        {
            List<Respuesta> resultado = null;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.Listar(examenClave, habilidadId, preguntaId, consecutivo);
            }
            catch (Exception ex)
            {
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));                
                resultado = null;
            }

            return resultado;
        }
        
        #endregion

        #region Obtener Respuesta(s)

        public List<Respuesta> ObtenerRespuestas(string examenClave = "", short habilidadId = 0, short preguntaId = 0)
        {
            List<Respuesta> resultado = null;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.ObtenerRespuestas(examenClave, habilidadId, preguntaId);
            }
            catch (Exception ex)
            {
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));                
                resultado = null;
            }

            return resultado;
        }
        
        #endregion

        #region Obtener Respuestas Aleatorias

        public List<RespuestaAleatoria> ObtenerRespuestasAleatorias(string examenClave, short habilidadId, short preguntaId)
        {
            List<RespuestaAleatoria> resultado = null;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.ObtenerRespuestasAleatorias(examenClave, habilidadId, preguntaId);
            }
            catch (Exception ex)
            {
                //throw new FaultException(FallaEvaluacion.ObtenerCausa(ex));
                resultado = null;
            }

            return resultado;
        }

        #endregion

        #region Verifica si la respuesta esta en el Rango de tiempo

        public bool VerificaRespuestaEnRangoTiempo(string codigoExamen, PreguntaAleatoria pregunta)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.VerificaRespuestaEnRangoTiempo(codigoExamen, pregunta);
                
            }
            catch (Exception)
            {
                resultado = false;
            }

            return resultado;
        }
        
        #endregion

        #region Registra Respuesta del Usuario

        public bool RegistrarRespuesta(string codigoExamen, PreguntaAleatoria pregunta, char[] respuestas, bool respuestaEnRangoTiempo)
        {
            bool resultado = false;

            try
            {
                LogicaDeNegocios.Respuestas r = new LogicaDeNegocios.Respuestas();
                resultado = r.RegistrarRespuesta(codigoExamen, pregunta, respuestas, respuestaEnRangoTiempo);
                
            }
            catch (Exception)
            {
                resultado = false;
            }

            return resultado;
        }
        
        #endregion
    }
}
